from PyQt5.QtWidgets import (QWidget, QLabel, QVBoxLayout, QHBoxLayout,
                             QPushButton, QFrame)
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtGui import QFont


class HomeUI(QWidget):
    # 添加信号
    switch_page = pyqtSignal(str)

    def __init__(self, parent=None):
        super().__init__(parent)
        self.init_ui()

    def init_ui(self):
        # 创建主布局
        main_layout = QVBoxLayout(self)
        main_layout.setContentsMargins(50, 30, 50, 50)
        main_layout.setSpacing(30)

        # 创建标题
        title = QLabel('欢迎使用自动化工具')
        title.setAlignment(Qt.AlignCenter)
        title.setStyleSheet('font-size: 30px; color: #2c3e50; margin-bottom: 20px;')

        # 创建功能说明
        desc = QLabel('本工具提供以下功能:')
        desc.setStyleSheet('font-size: 16px; color: #7f8c8d;')

        # 创建功能列表
        features = QLabel('''• 分册编号：处理文档分册编号
• 模块编号：处理模块分册编号（稿件级），选择配置及命令的上级目录
• PDF合稿：处理SCG/CREF整套稿件合稿、单个分册合稿+大本合稿、处理Yang等其它仅一个目录的稿件合稿
• PDF一键合并：提供3个按钮，用于从编号到合稿
• 清稿：处理文档修订、批注、全文域、修订记录表等
• 11x命令检查：检查命令摘要表格，判断是否存在错行
• 硬件手册：对发布文档进行版本校验，文档名规范化命名
• 版本信息：查看更新记录
• 操作指南：操作指导，注意事项
''')
        features.setStyleSheet('font-size: 16px; color: #7f8c8d; margin: 1px 0;')

        # 创建分隔线
        line = QFrame()
        line.setFrameShape(QFrame.HLine)
        line.setStyleSheet('background-color: #bdc3c7; margin: 0 0;')

        # 创建按钮容器
        button_container = QWidget()
        button_layout = QVBoxLayout(button_container)  # 改为垂直布局
        button_layout.setSpacing(20)
        button_layout.setContentsMargins(0, 0, 0, 0)

        # 创建功能按钮
        buttons = [
            # 第一行按钮
            [('分册编号', 'volume', '#3498db'),
             ('模块编号', 'module', '#2ecc71'),
             ('PDF合稿', 'pdf', '#c7b66f'),
             ('PDF一键合并', 'pdf_publishing', '#3498db'),
             ('硬件手册', 'hardware', '#e5ad60'),
             ],
            # 第二行按钮
            [('11x命令检查', 'command', '#3eafc0'),
             ('清稿', 'clear', '#e74c3c'),
             ('版本信息', 'version', '#9b59b6'),
             ('操作指南', 'option', '#34495e')]
        ]

        # 创建第一行按钮布局
        first_row = QHBoxLayout()
        first_row.setSpacing(20)
        first_row.setAlignment(Qt.AlignLeft)  # 设置左对齐

        # 添加第一行按钮
        for text, signal_name, color in buttons[0]:
            button = QPushButton(text)
            # 根据按钮文本设置不同的宽度
            if text == '11x命令检查':
                button.setFixedSize(160, 80)  # 增加宽度到160像素
            else:
                button.setFixedSize(120, 80)  # 其他按钮保持原来的尺寸
            button.setStyleSheet(f"""
                QPushButton {{
                    background-color: {color};
                    border-radius: 10px;
                    color: white;
                    font-size: 18px;
                    font-family: "Microsoft YaHei";
                }}
                QPushButton:hover {{
                    background-color: {color}CC;
                }}
            """)
            button.clicked.connect(lambda checked, name=signal_name: self.switch_page.emit(name))
            first_row.addWidget(button)

        first_row.addStretch()  # 在按钮后添加弹性空间

        # 创建第二行按钮布局
        second_row = QHBoxLayout()
        second_row.setSpacing(20)

        # 添加第二行按钮
        for text, signal_name, color in buttons[1]:  # 修改这里，使用buttons[1]而不是buttons[0]
            button = QPushButton(text)
            button.setFixedSize(120, 80)
            button.setStyleSheet(f"""
                QPushButton {{
                    background-color: {color};
                    border-radius: 10px;
                    color: white;
                    font-size: 18px;
                    font-family: "Microsoft YaHei";
                }}
                QPushButton:hover {{
                    background-color: {color}CC;
                }}
            """)
            button.clicked.connect(lambda checked, name=signal_name: self.switch_page.emit(name))
            second_row.addWidget(button)

        second_row.addStretch()  # 添加弹性空间，使按钮靠左对齐

        # 将行布局添加到主按钮布局
        button_layout.addLayout(first_row)
        button_layout.addLayout(second_row)

        # 添加版权信息
        copyright = QLabel('© 2025 luochen 自动化工具')
        copyright.setAlignment(Qt.AlignCenter)
        copyright.setStyleSheet('color: #95a5a6; font-size: 12px; margin-top: 20px;')

        # 将所有组件添加到主布局
        main_layout.addWidget(title)
        main_layout.addWidget(desc)
        main_layout.addWidget(features)
        main_layout.addWidget(line)
        main_layout.addWidget(button_container)
        main_layout.addStretch()
        main_layout.addWidget(copyright)
